From: Jan Beulich Date: Fri, 30 Nov 2012 10:42:55 +0000 (+0100) Subject: AMD IOMMU: add locking missing from c/s 26198:ba90ecb0231f X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~7585 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22?a=commitdiff_plain;h=c759fee45bf44f2947a3480d54c03ff7e028c39e;p=xen.git AMD IOMMU: add locking missing from c/s 26198:ba90ecb0231f An oversight of mine; I'm sorry. Signed-off-by: Jan Beulich Acked-by: Ian Campbell --- diff --git a/xen/drivers/passthrough/amd/iommu_init.c b/xen/drivers/passthrough/amd/iommu_init.c index 82ce9679a7..1cbdda344a 100644 --- a/xen/drivers/passthrough/amd/iommu_init.c +++ b/xen/drivers/passthrough/amd/iommu_init.c @@ -795,6 +795,7 @@ static bool_t __init set_iommu_interrupt_handler(struct amd_iommu *iommu) static void enable_iommu(struct amd_iommu *iommu) { unsigned long flags; + struct irq_desc *desc; spin_lock_irqsave(&iommu->lock, flags); @@ -812,7 +813,11 @@ static void enable_iommu(struct amd_iommu *iommu) if ( iommu_has_feature(iommu, IOMMU_EXT_FEATURE_PPRSUP_SHIFT) ) register_iommu_ppr_log_in_mmio_space(iommu); - set_msi_affinity(irq_to_desc(iommu->msi.irq), &cpu_online_map); + desc = irq_to_desc(iommu->msi.irq); + spin_lock(&desc->lock); + set_msi_affinity(desc, &cpu_online_map); + spin_unlock(&desc->lock); + amd_iommu_msi_enable(iommu, IOMMU_CONTROL_ENABLED); set_iommu_ht_flags(iommu);